#Boa:Dialog:Dialog1
# -*- coding: utf-8 -*-

import wx
import wx.grid
import utiles
import consultasBD
from decimal import Decimal

tabla = "bancosTarjetasListar"

ROJO = (255, 145, 145, 255)
VERDE = (145, 255, 145, 255)
AZUL = (145, 145, 255, 255)
BLANCO = (255, 255, 255, 255)
AMARILLO = (254, 248, 191, 255)
GRIS = ( 220, 220, 220, 255)
NEGRO = ( 0, 0, 0, 255)
VERDENEGRO = ( 47, 79, 79, 255)

def create(parent):
    return Dialog1(parent)

[wxID_DIALOG1, wxID_DIALOG1BUTTON1, wxID_DIALOG1BUTTON2, wxID_DIALOG1BUTTON3, 
 wxID_DIALOG1BUTTON4, wxID_DIALOG1BUTTON5, wxID_DIALOG1COMBOBOX1, 
 wxID_DIALOG1COMBOBOX2, wxID_DIALOG1COMBOBOX3, wxID_DIALOG1DATEPICKERCTRL1, 
 wxID_DIALOG1DATEPICKERCTRL2, wxID_DIALOG1GRID1, wxID_DIALOG1STATICTEXT1, 
 wxID_DIALOG1STATICTEXT2, wxID_DIALOG1STATICTEXT3, wxID_DIALOG1STATICTEXT4, 
 wxID_DIALOG1STATICTEXT5, 
] = [wx.NewId() for _init_ctrls in range(17)]

class Dialog1(wx.Dialog):
    def _init_ctrls(self, prnt):
        # generated method, don't edit
        wx.Dialog.__init__(self, id=wxID_DIALOG1, name='', parent=prnt,
              pos=wx.Point(45, 59), size=wx.Size(1019, 458),
              style=wx.DEFAULT_DIALOG_STYLE,
              title='Bancos: Listado de Tarjetas')
        self.SetClientSize(wx.Size(1011, 431))

        self.staticText1 = wx.StaticText(id=wxID_DIALOG1STATICTEXT1,
              label='Tarjetas', name='staticText1', parent=self,
              pos=wx.Point(152, 8), size=wx.Size(40, 13), style=0)

        self.staticText2 = wx.StaticText(id=wxID_DIALOG1STATICTEXT2,
              label='Desde el', name='staticText2', parent=self,
              pos=wx.Point(320, 8), size=wx.Size(41, 13), style=0)

        self.staticText3 = wx.StaticText(id=wxID_DIALOG1STATICTEXT3,
              label='Hasta el', name='staticText3', parent=self,
              pos=wx.Point(400, 8), size=wx.Size(39, 13), style=0)

        self.staticText4 = wx.StaticText(id=wxID_DIALOG1STATICTEXT4,
              label='Origen de los datos', name='staticText4', parent=self,
              pos=wx.Point(488, 8), size=wx.Size(93, 13), style=0)

        self.comboBox3 = wx.ComboBox(choices=[], id=wxID_DIALOG1COMBOBOX3,
              name='comboBox3', parent=self, pos=wx.Point(16, 24),
              size=wx.Size(130, 21), style=0, value='')
        self.comboBox3.SetLabel('')

        self.comboBox1 = wx.ComboBox(choices=[], id=wxID_DIALOG1COMBOBOX1,
              name='comboBox1', parent=self, pos=wx.Point(152, 24),
              size=wx.Size(160, 21), style=0, value='')
        self.comboBox1.SetLabel('')

        self.datePickerCtrl1 = wx.DatePickerCtrl(id=wxID_DIALOG1DATEPICKERCTRL1,
              name='datePickerCtrl1', parent=self, pos=wx.Point(320, 24),
              size=wx.Size(80, 21), style=wx.DP_DROPDOWN | wx.DP_SHOWCENTURY)

        self.datePickerCtrl2 = wx.DatePickerCtrl(id=wxID_DIALOG1DATEPICKERCTRL2,
              name='datePickerCtrl2', parent=self, pos=wx.Point(400, 24),
              size=wx.Size(80, 21), style=wx.DP_DROPDOWN | wx.DP_SHOWCENTURY)

        self.comboBox2 = wx.ComboBox(choices=[], id=wxID_DIALOG1COMBOBOX2,
              name='comboBox2', parent=self, pos=wx.Point(488, 24),
              size=wx.Size(144, 21), style=0, value='')
        self.comboBox2.SetLabel('')

        self.button2 = wx.Button(id=wxID_DIALOG1BUTTON2, label='Buscar',
              name='button2', parent=self, pos=wx.Point(640, 24),
              size=wx.Size(56, 23), style=0)
        self.button2.Bind(wx.EVT_BUTTON, self.OnBuscar, id=wxID_DIALOG1BUTTON2)

        self.button3 = wx.Button(id=wxID_DIALOG1BUTTON3, label='Limpiar',
              name='button3', parent=self, pos=wx.Point(704, 24),
              size=wx.Size(56, 23), style=0)
        self.button3.Bind(wx.EVT_BUTTON, self.OnLimpiar, id=wxID_DIALOG1BUTTON3)

        self.button4 = wx.Button(id=wxID_DIALOG1BUTTON4, label='Imprimir',
              name='button4', parent=self, pos=wx.Point(776, 24),
              size=wx.Size(56, 23), style=0)
        self.button4.Bind(wx.EVT_BUTTON, self.OnImprimir,
              id=wxID_DIALOG1BUTTON4)

        self.button5 = wx.Button(id=wxID_DIALOG1BUTTON5, label='Exportar',
              name='button5', parent=self, pos=wx.Point(840, 24),
              size=wx.Size(56, 23), style=0)
        self.button5.Bind(wx.EVT_BUTTON, self.OnExportar,
              id=wxID_DIALOG1BUTTON5)

        self.button1 = wx.Button(id=wxID_DIALOG1BUTTON1, label='Salir',
              name='button1', parent=self, pos=wx.Point(944, 24),
              size=wx.Size(56, 23), style=0)
        self.button1.Bind(wx.EVT_BUTTON, self.OnSalir, id=wxID_DIALOG1BUTTON1)

        self.grid1 = wx.grid.Grid(id=wxID_DIALOG1GRID1, name='grid1',
              parent=self, pos=wx.Point(16, 64), size=wx.Size(984, 360),
              style=0)

        self.staticText5 = wx.StaticText(id=wxID_DIALOG1STATICTEXT5,
              label='Sucursal', name='staticText5', parent=self,
              pos=wx.Point(16, 8), size=wx.Size(40, 13), style=0)

    def __init__(self, parent):
        self._init_ctrls(parent)
        fecha1 = str(utiles.getDaysExtreme()[0])
        utiles.cargar_fecha(fecha1,self.datePickerCtrl1)
        self.cargarCombos()
        self.crearGrilla()
        self.comboSucursales()

    def cargarCombos(self):
        r1 = "SELECT DISTINCT nombretarjeta FROM valores WHERE tipoVenta='1' "
        r2 = "ORDER BY nombretarjeta "
        sql = r1+r2
        
        datos = consultasBD.ordenCrudaDict(sql)
        self.comboBox1.Clear()
        self.comboBox1.Append("TODAS")
        for item in datos:
            if item["nombretarjeta"]=="": continue
            self.comboBox1.Append(item["nombretarjeta"])
        self.comboBox1.SetSelection(0)
        self.comboBox1.SetEditable(False)
        
        self.comboBox2.Append("Todas")
        self.comboBox2.Append("Ventas / Facturacion")
        self.comboBox2.Append("Cobranzas Ctas. Ctes.")
        self.comboBox2.Append("Caja Diaria - Ingr/Egr")
        self.comboBox2.SetSelection(0)
        self.comboBox2.SetEditable(False)

    def comboSucursales(self):
        SQL = "SELECT nombre FROM sucursales"
        resultado = consultasBD.ordenCrudaDict(SQL)
        for item in resultado:
            self.comboBox3.Append(item["nombre"])
        self.comboBox3.Append("TODAS")
        self.comboBox3.SetEditable(False)

    def ajustarAnchoColumnas(self):
        for y in xrange(self.grid1.GetNumberCols()):
            self.grid1.AutoSizeColumn(y,True)

    def crearGrilla(self):
        #Fecha,Origen,Suc,idventa,idrecibo,NroFact,Cliente,FormaPago,Desc,lote,cupon,Monto,Cuotas
        #0     1      2   3       4        5       6       7         8    9    10    11    12
        columnas = ['Fecha','Origen','Suc','idventa','idrecibo',\
                    'Numero\nFactura','Cliente','Forma\nPago','Descripcion',\
                    'Lote','Cupon','Monto','Cuotas',]
        self.grid1.CreateGrid(1,len(columnas))
        for i, col in enumerate(columnas): 
            self.grid1.SetColLabelValue(i, col)

        self.grid1.SetSelectionMode(wx.grid.Grid.wxGridSelectRows)
        self.grid1.EnableEditing(False)
        self.ajustarAnchoColumnas()
        self.grid1.Refresh()

    def OnSalir(self, event):
        self.Close()
        
    def rangoFecha(self):
        fecha1 = self.datePickerCtrl1.GetLabel()
        fecha1 = fecha1.replace("/","-")
        fecha1 = utiles.invertirFecha(fecha1)
        if fecha1<"2012-07-21":
            fecha1 = "2012-07-21"
        fecha2 = self.datePickerCtrl2.GetLabel()
        fecha2 = fecha2.replace("/","-")
        fecha2 = utiles.invertirFecha(fecha2)
        return fecha1,fecha2
        
    def OnLimpiar(self, event):
        self.comboBox1.SetSelection(0)
        self.comboBox2.SetSelection(0)
        self.comboBox3.SetSelection(-1)
        self.grid1.ClearGrid()
        for fil in xrange(self.grid1.GetNumberRows()):
            self.grid1.DeleteRows()
        self.grid1.AppendRows()
        self.comboBox1.SetFocus()
        
    def armarSQL1(self,suc): #pagos por ventas
        fecha1,fecha2 = self.rangoFecha()
        opcion1 = "fecha BETWEEN '"+fecha1+"' AND '"+fecha2+"' \n"
        
        r1 = "SELECT vtp.fecha,vtp.idventa,vtp.nrofactura,vtp.idcliente, \n"
        r2 = "       c.nombre,vtp.idformapagos AS idformapago, \n"
        r3 = "       vtp.descrivalor AS descripcion,vtp.monto AS montopago, \n"
        r4 = "       vtp.cuotas, vtp.nrorecibo AS idrecibo \n"
        r5 = "FROM ventastienepagos vtp, valores v, cliente c \n"
        r6 = "WHERE "+opcion1
        r7 = "      AND vtp.idformapagos=v.nombre \n"
        r8 = "      AND v.tipoVenta='1' AND c.idcliente=vtp.idcliente \n"
        r9 = "ORDER BY vtp.fecha "
        sql = r1+r2+r3+r4+r5+r6+r7+r8+r9
        
        datos,conexion = consultasBD.ordenCrudaDictRemota2(sql,suc)
        return datos

    def armarSQL2(self,suc): #pagos por cta cte
        fecha1,fecha2 = self.rangoFecha()
        opcion1 = "fecha BETWEEN '"+fecha1+"' AND '"+fecha2+"' \n"

        r1 = "SELECT vccp.fecha,vccp.idventa,vccp.nrofactura,c.idcliente,\n"
        r2 = "       c.nombre,vv.idformapago,vv.descripcion,vv.montopago,\n"
        r3 = "       '-1' AS cuotas,vv.idrecibo \n"
        r4 = "FROM vtas_ctasctestienepagos vccp, vtas_valores vv, \n"
        r5 = "     valores v, cliente c \n"
        r6 = "WHERE "+opcion1
        r7 = "      AND vccp.idrecibo=vv.idrecibo AND c.idcliente=vv.idcliente \n"
        r8 = "      AND v.nombre=vv.idformapago AND v.tipoVenta='1' \n"
        r9 = "ORDER BY vccp.fecha "
        sql = r1+r2+r3+r4+r5+r6+r7+r8+r9
        
        datos,conexion = consultasBD.ordenCrudaDictRemota2(sql,suc)
        return datos

    def armarSQL3(self,suc): #pagos por ingresos/egresos
        fecha1,fecha2 = self.rangoFecha()
        opcion1 = "cc.fecha BETWEEN '"+fecha1+" 00:00:00' AND '"+fecha2+" 23:59:59' \n"

        r1 = "SELECT cc.fecha, cc.id AS idventa, '' AS nrofactura, \n"
        r2 = "       '' AS idcliente, cc.observaciones AS nombre, \n"
        r3 = "       v.nombre AS idformapago, cc.descripcionpago, \n"
        r4 = "       cc.monto AS montopago, '-1' AS cuotas, '' AS idrecibo \n"
        r5 = "FROM cajachica2 cc, valores v \n"
        r6 = "WHERE descripcionpago LIKE '%Tarjeta%' \n"
        r7 = "      AND "+opcion1
        r8 = "      AND cc.idvalor = v.nombre \n"
        r9 = "ORDER BY cc.fecha "
        sql = r1+r2+r3+r4+r5+r6+r7+r8+r9
        
        datos,conexion = consultasBD.ordenCrudaDictRemota2(sql,suc)
        return datos

    def crearTablaAuxiliar(self,tabla,sucursal):
        print "Creando tabla auxiliar"
        sql = "DROP TABLE IF EXISTS "+tabla
        consultasBD.ordenCruda(sql)
        r1 = "CREATE TABLE  `erpsussan`.`"+tabla+"` ("
        r2 = "`id` INT NOT NULL AUTO_INCREMENT ,"
        r3 = "`fecha` DATETIME NOT NULL ,"
        r4 = "`origen` VARCHAR( 15 ) NOT NULL ,"
        r5 = "`sucursal` INT( 2 ) NOT NULL ,"
        r6 = "`nrofactura` VARCHAR( 15 ) NOT NULL ,"
        r7 = "`idcliente` VARCHAR( 10 ) NOT NULL ,"
        r8 = "`nombre` VARCHAR( 50 ) NOT NULL ,"
        r9 = "`idformapago` VARCHAR( 20 ) NOT NULL ,"
        r0 = "`descripcion` VARCHAR( 100 ) NOT NULL ,"
        rA = "`lote` VARCHAR( 5 ) NOT NULL DEFAULT '',"
        rB = "`cupon` VARCHAR( 5 ) NOT NULL DEFAULT '',"
        rC = "`montopago` DECIMAL( 15, 2 ) NOT NULL ,"
        rD = "`cuotas` INT( 3 ) NOT NULL DEFAULT '0',"
        rE = "`idventa` VARCHAR( 10 ) NOT NULL ,"
        rF = "`idrecibo` VARCHAR( 10 ) NOT NULL ,"
        rG = "PRIMARY KEY (  `id` )"
        rH = ") ENGINE = INNODB"
        sql = r1+r2+r3+r4+r5+r6+r7+r8+r9+r0+rA+rB+rC+rD+rE+rF+rG+rH
        consultasBD.ordenCruda(sql)

        fecha1 = self.datePickerCtrl1.GetLabel()
        fecha1 = fecha1.replace("/","-")
        fecha1 = utiles.invertirFecha(fecha1)
        if fecha1<"2012-07-21":
            utiles.mensaje(None,"No hay informacion anterior al 21/07/2012")

        for suc in sucursal:
            print "-Procesando Ventas -",
            datos = self.armarSQL1(suc)
            for item in datos:
                fecha = str(item["fecha"])
                origen = "VENTAS"
                nrofactura = str(item["nrofactura"])
                idcliente = str(item["idcliente"])
                nombre = str(item["nombre"])
                idformapago = str(item["idformapago"])
                aux = str(item["descripcion"])
                descripcion,lote,cupon = aux.split(" / ")
                montopago = str(item["montopago"])
                cuotas = str(item["cuotas"])
                idventa = str(item["idventa"])
                idrecibo = str(item["idrecibo"])
                
                r1 = tabla+"(fecha,origen,sucursal,nrofactura,idcliente,nombre,idformapago,"
                r2 = "descripcion,montopago,cuotas,idventa,idrecibo,lote,cupon)"
                sql1 = r1+r2
                r1 = "('%s','%s','%s','%s','%s'," % (fecha,origen,suc,nrofactura,idcliente)
                r2 = "'%s','%s','%s'," % (nombre,idformapago,descripcion)
                r3 = "'%s','%s','%s','%s'," % (montopago,cuotas,idventa,idrecibo)
                r4 = "'%s','%s')" % (lote,cupon)
                sql2 = r1+r2+r3+r4
                consultasBD.executaInsertSQL(None,sql1,sql2)
            
            print "-Procesando Ctas Ctes -",
            datos = self.armarSQL2(suc)
            for item in datos:
                fecha = str(item["fecha"])
                origen = "CC"
                nrofactura = str(item["nrofactura"])
                idcliente = str(item["idcliente"])
                nombre = str(item["nombre"])
                idformapago = str(item["idformapago"])
                aux = str(item["descripcion"])
                descripcion,lote,cupon = aux.split(" / ")
                montopago = str(item["montopago"])
                cuotas = str(item["cuotas"])
                idventa = str(item["idventa"])
                idrecibo = str(item["idrecibo"])

                r1 = tabla+"(fecha,origen,sucursal,nrofactura,idcliente,nombre,idformapago,"
                r2 = "descripcion,montopago,cuotas,idventa,idrecibo,lote,cupon)"
                sql1 = r1+r2
                r1 = "('%s','%s','%s','%s','%s'," % (fecha,origen,suc,nrofactura,idcliente)
                r2 = "'%s','%s','%s'," % (nombre,idformapago,descripcion)
                r3 = "'%s','%s','%s','%s'," % (montopago,cuotas,idventa,idrecibo)
                r4 = "'%s','%s')" % (lote,cupon)
                sql2 = r1+r2+r3+r4
                consultasBD.executaInsertSQL(None,sql1,sql2)
            
            print "-Procesando Caja -",
            datos = self.armarSQL3(suc)
            for item in datos:
                fecha = str(item["fecha"])
                origen = "CAJA"
                nrofactura = str(item["nrofactura"])
                idcliente = str(item["idcliente"])
                nombre = str(item["nombre"])
                idformapago = str(item["idformapago"])
                aux = str(item["descripcionpago"])
                descripcion,lote,cupon = aux.split(" / ")
                montopago = str(item["montopago"])
                cuotas = str(item["cuotas"])
                idventa = str(item["idventa"])
                idrecibo = str(item["idrecibo"])

                r1 = tabla+"(fecha,origen,sucursal,nrofactura,idcliente,nombre,idformapago,"
                r2 = "descripcion,montopago,cuotas,idventa,idrecibo,lote,cupon)"
                sql1 = r1+r2
                r1 = "('%s','%s','%s','%s','%s'," % (fecha,origen,suc,nrofactura,idcliente)
                r2 = "'%s','%s','%s'," % (nombre,idformapago,descripcion)
                r3 = "'%s','%s','%s','%s'," % (montopago,cuotas,idventa,idrecibo)
                r4 = "'%s','%s')" % (lote,cupon)
                sql2 = r1+r2+r3+r4
                consultasBD.executaInsertSQL(None,sql1,sql2)

        return True
        
    def cargarGrilla(self,items):
        sql = "SELECT codsucursal,nombre FROM sucursales WHERE 1"
        datos = consultasBD.ordenCruda(sql)
        misSucursales = {}
        for item in datos:
            misSucursales[item[0]]=item[1]
        
        print "-Cargando datos"
        total = Decimal("0.00")
        for fil,datos in enumerate(items):
            fecha = str(datos["fecha"])
            fecha = fecha[:10]
            fecha = utiles.invertirFecha2(fecha)
            origen = str(datos["origen"])
            suc = str(datos["sucursal"])
            try:
                sucursal = misSucursales[str(int(suc)+1)][:10]
            except:
                sucursal = str(int(suc)+1)
            nrofactura = str(datos["nrofactura"])
            idcliente = str(datos["idcliente"])
            nombre = str(datos["nombre"])
            idformapago = str(datos["idformapago"])
            descripcion = str(datos["descripcion"])
            lote = str(datos["lote"])
            cupon = str(datos["cupon"])
            montopago = str(datos["montopago"])
            try:
                total+= Decimal(montopago)
            except:
                total+= Decimal("0.00")
            cuotas = str(datos["cuotas"])
            if cuotas == "-1": cuotas = ""
            idventa = str(datos["idventa"])
            if idventa=="0": idventa=""
            idrecibo = str(datos["idrecibo"])
            if idrecibo=="0": idrecibo=""
            #Fecha,Origen,Suc,idventa,idrecibo,NroFact,Cliente,FormaPago,Desc,lote,cupon,Monto,Cuotas
            #0     1      2   3       4        5       6       7         8    9    10    11    12
            self.grid1.SetCellValue(fil,0,fecha)
            self.grid1.SetCellValue(fil,1,origen)
            self.grid1.SetCellValue(fil,2,sucursal)
            self.grid1.SetCellValue(fil,3,idventa)
            self.grid1.SetCellValue(fil,4,idrecibo)
            self.grid1.SetCellValue(fil,5,nrofactura)
            self.grid1.SetCellValue(fil,6,nombre[:15]+" / "+idcliente)
            self.grid1.SetCellValue(fil,7,idformapago)
            self.grid1.SetCellValue(fil,8,descripcion[:15])
            self.grid1.SetCellValue(fil,9,lote)
            self.grid1.SetCellValue(fil,10,cupon)
            self.grid1.SetCellValue(fil,11,montopago)
            self.grid1.SetCellValue(fil,12,cuotas)
            self.grid1.SetCellAlignment(fil,11, wx.ALIGN_RIGHT, wx.ALIGN_CENTRE)
            self.grid1.SetCellAlignment(fil,12, wx.ALIGN_RIGHT, wx.ALIGN_CENTRE)
            self.grid1.AppendRows()
        self.grid1.SetCellValue(fil+1,8,"TOTAL -->")
        self.grid1.SetCellValue(fil+1,11,str(total))
        self.grid1.SetCellAlignment(fil+1,11, wx.ALIGN_RIGHT, wx.ALIGN_CENTRE)
        self.ajustarAnchoColumnas()

    def OnBuscar(self, event):
        print "Buscar datos"
        if self.comboBox3.GetSelection()<0:
            utiles.mensaje(None,"Debe seleccionar sucursal")
            self.comboBox3.SetFocus()
            return
        sucursal = self.comboBox3.GetSelection()
        totalItems = len(self.comboBox2.GetItems())
        if sucursal==totalItems: 
            sucursal = []
            for i in xrange(totalItems):
                sucursal.append(i)
        else:
            sucursal = [sucursal]
    
        if not self.crearTablaAuxiliar(tabla,sucursal):
            utiles.mensaje(None,"No pudo crearse la tabla auxiliar")
            return
    
        self.grid1.ClearGrid()
        for fil in xrange(self.grid1.GetNumberRows()):
            self.grid1.DeleteRows()
        self.grid1.AppendRows()

        fcha1,fcha2 = self.rangoFecha()
        
        opc1 = "fecha BETWEEN '"+fcha1+" 00:00:00' AND '"+fcha2+" 23:59:59' "
        opc2 = ""
        otratabla = ""
        if self.comboBox1.GetSelection()!=0:
            tarjeta = self.comboBox1.GetLabel()
            otratabla = ",valores p2 "
            r1 = " AND p1.idformapago=p2.nombre "
            r2 = "AND p2.nombretarjeta='"+tarjeta+"' \n"
            opc2 = r1+r2
        
        opc3 = ""
        valor = self.comboBox2.GetSelection()
        if valor!=0:
            if valor==1: #VENTA
                opc3 = " AND origen='VENTAS' "
            elif valor==2: #CC
                opc3 = " AND origen='CC' "
            else: #CAJA
                opc3 = " AND origen='CAJA' "
        
        r1 = "SELECT * FROM "+tabla+" p1"+otratabla+" \n"
        r2 = "WHERE "+opc1+" \n"+opc2+opc3
        r3 = "ORDER BY fecha,origen,idcliente "
        sql = r1+r2+r3
        
        datos = consultasBD.ordenCrudaDict(sql)
        self.cargarGrilla(datos)

    def OnImprimir(self, event):
        print "Imprimir"

        f=open("c:\\matrisamor.doc\\reporte-ListadoBancosTarjetas.html","w")
        numeroPagina = 1
        nrosuc,nombresuc = utiles.datosSucursal()
        
        totalItemPorPagina = 30
        totalPaginas = int(self.grid1.GetNumberRows()-1) / totalItemPorPagina 
        totalPaginas+= 1

        def encabezadoPagina(texto):
            fecha = utiles.getfechaTime()
            fecha1 = self.datePickerCtrl1.GetLabel()
            fecha2 = self.datePickerCtrl2.GetLabel()

            a = '<table width="100%" cellspacing="0" border="0">\n'
            a+= '<tr>\n'
            a+= '<td valign="center" align="left" width="33%">\n'
            a+= 'SUSSAN BOUTIQUE<br><font size="0.02">Listado Cobranzas con Tarjetas Bancos</font>\n'
            a+= '</td>\n<td valign="center" align="left" width="34%"><font size="0.02">\n'
            a+= 'Desde '+fecha1+' Hasta '+fecha2+'<br>\n'
            a+= ' Tarjeta: '+self.comboBox1.GetLabel()+'\n'
            a+= '</font></td>\n'
            a+= '<td valign="center" align="right" width="33%">'+fecha
            a+= '<br>P&aacute;gina '+str(numeroPagina)+' / '+str(totalPaginas)+'</td>\n'
            a+= '</tr>\n'
            a+= '</table>\n'
            texto+= a
            return texto
        
        def encabezadoTabla(texto):
            a = '<hr>'

            a+= '<table width="100%" cellspacing="1" border="0"> \n'
            a+= '<tr>\n'
            i = 0
            alineacion = "left"
            for col in xrange(self.grid1.GetNumberCols()):
                i+= 1
                titulo = self.grid1.GetColLabelValue(col)
                titulo = titulo.replace("\n","<br>")
                if col in [8,9,10,11]:
                    alineacion = "right"
                a+= '<td valign="top" align="'+alineacion+'">'+titulo+'</td> \n'
                alineacion = "left"
            a+= '</tr> \n'
            a+= '<tr>\n'
            a+= '<td colspan="'+str(i)+'"><hr></td>\n'
            a+= '</tr>\n'
            texto+= a
            return texto
        
        cadena = '<?xml version="1.0" encoding="utf-8" ?> \n'
        cadena+= '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> \n'
        cadena+= '<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> \n'
        cadena+= '<head> \n'
        cadena+= '<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> \n'
        cadena+= '<meta name="generator" content="Docutils 0.4.1: http://docutils.sourceforge.net/" /> \n'
        cadena+= '<title>Sussan Boutique</title> \n'
        cadena+= '</head> \n'
        cadena+= '<body> \n'

        cadena = encabezadoPagina(cadena)
        cadena = encabezadoTabla(cadena)
        f.write(cadena)

        renglon = 0
        for fil in xrange(self.grid1.GetNumberRows()):
            cadena = '<tr> \n'
            taman = "1.5"
            #Fecha,Origen,Suc,idventa,idrecibo,NroFact,Cliente,FormaPago,Desc,lote,cupon,Monto,Cuotas
            #0     1      2   3       4        5       6       7         8    9    10    11    12
            alineacion = "left"
            for col in xrange(self.grid1.GetNumberCols()):
                celda = self.grid1.GetCellValue(fil,col)
                if col in [9,10,11,12]:
                    alineacion = "right"
                cadena+= '<td valign="top" align="'+alineacion+'"><font size="'+taman+'">'+celda+'</font></td> \n'
                alineacion = "left"
            
            cadena+= '</tr>\n'
            f.write(cadena)
            
            renglon+= 1
            
            if renglon == totalItemPorPagina :
                f.write("</table><!-- salto de pagina -->\n")
                f.write("<p STYLE='page-break-after: always;'></p>\n")                
                renglon = 0
                numeroPagina+= 1
                cadena = encabezadoPagina("")
                cadena = encabezadoTabla(cadena)
                f.write(cadena)

        tama = '"1"'
            
        cadena = '</table>\n'
        f.write(cadena)
        f.close()

        import os
        os.system("taskkill /IM firefox.exe /F")
        os.system("c:\\explorer.lnk c:\\matrisamor.doc\\reporte-ListadoBancosTarjetas.html")

    def OnExportar(self, event):
        fecha = utiles.obtenerFecha("Y-m-d h:m:s")
        fecha = fecha.replace("-","")
        fecha = fecha.replace(" ","")
        fecha = fecha.replace(":","")
        dir = "c:\\matrisamor.doc\\"
        archivo = "listadoTarjetasBancos-"+fecha+".cvs"
        nombre = dir+archivo
        f = open(nombre,"w")
        titulo = ""
        #Fecha,Origen,Suc,idventa,idrecibo,NroFact,Cliente,FormaPago,Desc,lote,cupon,Monto,Cuotas
        #0     1      2   3       4        5       6       7         8    9    10    11    12
        for col in xrange(self.grid1.GetNumberCols()):
            valor = self.grid1.GetColLabelValue(col)
            if col == 10: valor = valor.replace(".",",")
            titulo+= valor+";"
        titulo = titulo[:-1]
        titulo = titulo.replace("\n"," ")
        f.write(titulo+"\n")
        for fil in xrange(self.grid1.GetNumberRows()):
            cadena = ""
            for col in xrange(self.grid1.GetNumberCols()):
                cadena+= self.grid1.GetCellValue(fil,col)+";"
            f.write(cadena[:-1]+"\n")
        f.close()
        utiles.mensaje(None,"Exportado en "+dir+"\nen el archivo de nombre\n"+archivo)
